
package com.jf.cloud.im.mapper;

import com.jf.cloud.im.model.ImMsgBizUserHistory;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 店铺和用户历史聊天记录表
 *
 * @author zz
 * @date 2021-08-25 13:58:56
 */
public interface ImMsgBizUserHistoryMapper {

    /**
     * 获取店铺和用户历史聊天记录表列表
     * @return 店铺和用户历史聊天记录表列表
     */
    List<ImMsgBizUserHistory> list();

    /**
     * 获取店铺和用户历史聊天记录表列表
     * @param sendType 发送类型
     * @param bizId 平台或商家id
     * @param employeeId 员工id
     * @param userId 用户id
     * @return 店铺和用户历史聊天记录表列表
     */
    List<ImMsgBizUserHistory> listBySendTypeBizIdUserId(@Param("sendType") Integer sendType, @Param("bizId") Long bizId, @Param("employeeId") Long employeeId, @Param("userId") Long userId);

    /**
     * 获取一天内某个用户和店铺的聊天记录(转接客服后共享聊天记录)
     *
     * @param sendType 发送类型
     * @param bizId 商家或平台id
     * @param employeeId 员工id(用于查询非此员工的聊天记录)
     * @param userId 用户id
     * @return
     */
    List<ImMsgBizUserHistory> getHistoryBeforeTransfer(@Param("sendType") Integer sendType, @Param("bizId") Long bizId, @Param("employeeId") Long employeeId, @Param("userId") Long userId);

    /**
     * 根据店铺和用户历史聊天记录表id获取店铺和用户历史聊天记录表
     *
     * @param id 店铺和用户历史聊天记录表id
     * @return 店铺和用户历史聊天记录表
     */
    ImMsgBizUserHistory getById(@Param("id") Long id);

    /**
     * 获取某个用户和店铺的所有的聊天记录(转接客服后共享聊天记录)
     * @param sendType
     * @param bizId
     * @param userId
     * @return
     */
    List<ImMsgBizUserHistory> getHistoryByUserId(@Param("sendType") Integer sendType, @Param("bizId") Long bizId, @Param("userId") Long userId);


    /**
     * 根据店铺和用户历史聊天记录表参数获取店铺和用户历史聊天记录表
     *
     * @param imMsgBizUserHistory 店铺和用户历史聊天记录参数
     * @return 店铺和用户历史聊天记录表
     */
    ImMsgBizUserHistory getByParam(@Param("imMsgBizUserHistory") ImMsgBizUserHistory imMsgBizUserHistory);

    /**
     * 保存店铺和用户历史聊天记录表
     * @param imMsgBizUserHistory 店铺和用户历史聊天记录表
     */
    void save(@Param("imMsgBizUserHistory") ImMsgBizUserHistory imMsgBizUserHistory);

    /**
     * 更新店铺和用户历史聊天记录表
     * @param imMsgBizUserHistory 店铺和用户历史聊天记录表
     */
    void update(@Param("imMsgBizUserHistory") ImMsgBizUserHistory imMsgBizUserHistory);

    /**
     * 批量更新店铺和用户历史聊天记录表
     * @param imMsgBizUserHistories 店铺和用户历史聊天记录表
     */
    void updateBatch(@Param("imMsgBizUserHistories") List<ImMsgBizUserHistory> imMsgBizUserHistories);

    /**
     * 根据店铺和用户历史聊天记录表id删除店铺和用户历史聊天记录表
     * @param id 消息id
     */
    void deleteById(@Param("id") Long id);

    /**
     * 查出用户未读消息数
     * @param imMsgBizUserId 消息id
     * @param userUnread 用户未读
     * @param whoSend 谁发的
     * @return 未读消息数
     */
    int countByUserUnread(@Param("imMsgBizUserId") Long imMsgBizUserId, @Param("userUnread") Integer userUnread, @Param("whoSend") Integer whoSend);

    /**
     * 查出员工未读消息数
     * @param imMsgBizUserId 消息id
     * @param employeeUnread 员工未读
     * @param whoSend 谁发的
     * @return 未读消息数
     */
    int countByEmployeeUnread(@Param("imMsgBizUserId") Long imMsgBizUserId, @Param("employeeUnread") Integer employeeUnread, @Param("whoSend") Integer whoSend);

    /**
     * 查出员工未读消息数
     * @param imMsgBizUserId 消息id
     * @param employeeId 员工id
     * @param employeeUnread 员工未读
     * @param whoSend 谁发的
     * @return 未读消息数
     */
    int countByEmployeeUnread2(@Param("imMsgBizUserId") Long imMsgBizUserId, @Param("employeeId") Long employeeId, @Param("employeeUnread") Integer employeeUnread, @Param("whoSend") Integer whoSend);
}
